package main

//func getOpera() (op *mysql.Operator) {
//	//gen := export.Genera{}
//	conf := config.InitTestConfig()
//	connect := mysql.Connection{}
//	conn, _ := connect.Connect(conf)
//	return &mysql.Operator{Conn: conn, DB: connect.DB}
//
//}

//func RunSP() {
//	sqlSetRR := "SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ" //设置当前会话的事务隔离等级为RR，RR可避免不可重复读和幻读。
//	sqlStart := "START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */"  //是开启事务的一致性快照, 只在RR隔离级别下有效
//	ctx := context.TODO()
//	OP := getOpera()
//
//	err := OP.ExecContext(ctx, sqlSetRR)
//	if err != nil {
//		return
//	}
//	err = OP.ExecContext(ctx, sqlStart)
//	if err != nil {
//		return
//	}
//	go func() {
//		for {
//			OP.Lock()
//			row, err := OP.QueryContextRow(ctx, "select * from t_arcitle")
//			if err != nil {
//				return
//			}
//			fmt.Println("select for go runtime", ":", row[0]["title"])
//			time.Sleep(time.Millisecond * 100)
//			OP.Unlock()
//		}
//	}()
//
//	for i := 0; i < 10000; i++ {
//		OP.Lock()
//		row, err := OP.QueryContextRow(ctx, "select * from t_arcitle")
//		if err != nil {
//			return
//		}
//		fmt.Println("select for", i, ":", row[0]["title"])
//		OP.Unlock()
//	}
//}
//
//func RunSPDB() {
//	sqlSetRR := "SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ" //设置当前会话的事务隔离等级为RR，RR可避免不可重复读和幻读。
//	sqlStart := "START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */"  //是开启事务的一致性快照, 只在RR隔离级别下有效
//
//	OP := getOpera()
//	err := OP.Exec(sqlSetRR)
//	if err != nil {
//		return
//	}
//	err = OP.Exec(sqlStart)
//	if err != nil {
//		return
//	}
//	go func() {
//		for {
//			row, err := OP.QueryAll("select * from t_arcitle")
//			if err != nil {
//				return
//			}
//			fmt.Println("select for", ":", row[0]["title"])
//			time.Sleep(time.Millisecond * 100)
//		}
//	}()
//	for i := 0; i < 10000; i++ {
//		row, err := OP.QueryAll("select * from t_arcitle")
//		if err != nil {
//			return
//		}
//		fmt.Println("select for", i, ":", row[0]["title"])
//		time.Sleep(time.Millisecond * 50)
//	}
//}
